Methods, Systems, And Devices For Designing and Manufacturing Flank Millable Components

ABSTRACT

Methods, systems, and devices for designing and manufacturing flank millable components. In one embodiment, devices, systems, and methods for designing a flank millable component are provided, in which a user is notified when a component geometry option is selected that will result in the component not being flank millable. In another embodiment, the user is prevented from selecting a geometry option that would result in the component not being flank millable. In yet another embodiment, devices, systems, and methods are provided for manufacturing a component with a flank milling process, in which optimized machine instructions are determined that minimize milling machine motion.

RELATED APPLICATION DATA

This application is a non-provisional of U.S. Provisional Patent Application Ser. No. 61/720,166, filed Oct. 30, 2012, entitled “System and Method of Flank Milling a Turbo-Machinery Blade Using Ruled Surfaces,” which is incorporated by reference herein in its entirety.

FIELD OF THE INVENTION

The present invention generally relates to the field of design and manufacture of components. In particular, the present invention is directed to the design of flank millable components and methods of determining milling instructions for flank milling components.

BACKGROUND

In a typical turbomachinery component design process, a turbomachinery component can be designed using computer automated design (CAD) software that can be used to generate a dataset representing the shape of the component. Computer automated manufacturing (CAM) software can then be used to translate the data set into a series of machining instructions that will be used to manufacture the component.

Turbomachinery components are often manufactured by a machining process whereby material is removed from a work piece with a mill having a rotary cutter. Significant advancements in machining time, part tolerances, and part finishes have been realized by employing a flank milling process, where the side of an elongated cutter is used to remove material, rather than the end of the cutter, which is utilized in a point milling process. Flank milling, however, can only be used to machine certain geometries and state of the art turbomachinery components often have very complex shapes. In addition, modern CAD software provides designers with great flexibility in designing components, and designers can employ complex design processes to optimize component geometry. This high degree of flexibility can lead to the design of a component that will be difficult or impossible to flank mill. The designer, however, may not realize he or she has designed a component that cannot be flank milled until very late in the design process, for example, not until prototyping or manufacturing. At that point the designer is in an undesirable position choosing between proceeding with a less efficient and more costly manufacturing process such as point milling, or going back and re-designing the component. And even if a flank millable geometry is input into the CAM software, the machine instructions calculated by the CAM program can result in excessive machine motion and undesirably long machining times.

SUMMARY OF THE DISCLOSURE

In one implementation, the present disclosure is directed to a method of designing a flank millable component. The method includes providing a user with a plurality of options for defining a geometry of a component, and notifying the user when the user selects an option from said plurality of options that will result in the component not being flank millable.

In another implementation, the present disclosure is directed to a method of determining machine instructions for flank milling a surface with a milling machine having a cutter, the machine instructions being determined from an array of data points representing a series of cutter positions along the surface, an orientation of the cutter being a function of an azimuthal angle (θ) and a polar angle (Φ). The method includes determining an initial set of cutter orientations, and calculating a machine motion minimized set of cutter orientations, wherein said calculating step comprises using an optimizer to simultaneously minimize machine motion in both the θ and Φ directions.

In yet another implementation, the present disclosure is directed a method of flank milling a component. The method includes providing a component-geometry subroutine capable of determining a surface geometry of a flank millable component, said component-geometry subroutine configured to notify a user of said sub-routine when the user selects a geometry option that will result in the component not being flank millable, providing a machine-instruction subroutine capable of converting a surface geometry calculated by said component-geometry subroutine into machine instructions for machining a flank millable component with the cutter of a milling machine, and said machine-instruction subroutine configured to calculate machine instructions that result in minimal milling machine motion by simultaneously minimizing the motion of the milling machine in both azimuthal and polar directions.

BRIEF DESCRIPTION OF THE DRAWINGS

For the purpose of illustrating the invention, the drawings show aspects of one or more embodiments of the invention. However, it should be understood that the present invention is not limited to the precise arrangements and instrumentalities shown in the drawings, wherein:

FIG. 1 is a flow diagram illustrating a method of designing a flank millable component and manufacturing the component with a flank milling process;

FIG. 2 is a perspective view of an exemplary five-axis milling machine;

FIG. 3 is a top view of an exemplary turbomachinery component that can be designed to be flank millable and then machined using optimized machining instructions;

FIG. 4 is a flow diagram illustrating a method of designing a flank millable component;

FIG. 5 is an example graphical user interface for implementing a method of designing a flank millable component;

FIG. 6 is an example graphical user interface for implementing a method of designing a flank millable component;

FIG. 7 is a cross sectional view, in a meridional plane, of a Fully Radial turbomachinery blade geometry with geometry quasi-orthogonal lines;

FIG. 8 is a cross sectional view, in a meridional plane, of a Fully Radial turbomachinery blade geometry with flow quasi-orthogonal lines;

FIG. 9 is an example graphical user interface for implementing a method of designing a flank millable component;

FIG. 10 is a perspective view of a turbomachinery impeller having a plurality of blades with swept leading edges;

FIG. 11 is a perspective view of a turbomachinery blade having a sheared edge;

FIG. 12 is a perspective view of a turbomachinery blade having a rounded edge;

FIG. 13 is a flow diagram illustrating a method of designing a flank millable component;

FIG. 14 is a flow diagram for a sub-routine of the method shown in FIG. 13;

FIG. 15 is a flow diagram for a sub-routine of the method shown in FIG. 13;

FIG. 16 is a flow diagram for a sub-routine of the method shown in FIG. 13;

FIG. 17 is a flow diagram for a sub-routine of the method shown in FIG. 13;

FIG. 18 is a flow diagram illustrating a method of calculating milling machine instructions for flank milling a part;

FIG. 19 is a perspective view of an initial position of a milling machine rotary cutter;

FIG. 20 is a perspective view of the cutter of FIG. 19, and also showing an amount of undercut;

FIG. 21 is a perspective view of the cutter of FIG. 19 in an alternative orientation;

FIG. 22 is a flow diagram illustrating a method of calculating milling machine instructions for flank milling a part;

FIG. 23 is a perspective view of a cutter and a turbomachinery blade surface;

FIG. 24 is side views of exemplary types of milling machine cutters;

FIG. 25 is an illustration of cutter positions along a machine path;

FIG. 26 is an illustration of a subset of the cutter positions in FIG. 25;

FIG. 27 is a flow diagram illustrating a method of designing a flank millable component with improved manufacturability; and

FIG. 28 is a diagram illustrating a machine capable of implementing various aspects of the present disclosure.

DETAILED DESCRIPTION

Some aspects of the present invention include devices, methods, and systems for designing a component that can be machined, at least in part, with a flank milling machining process. Methods of designing a flank millable component include monitoring component geometry options selected by a designer and notifying the designer when a geometry option is selected that will result in the component no longer being flank millable. Other aspects include providing the designer with options to modify the component geometry to make the component flank millable. As will be seen below, such feedback during the design process can be invaluable, ensuring the final component design will be flank millable and avoiding the undesirable situation of not learning until too late in the product design phase that a component cannot be flank milled. Other aspects of the present invention include improved methods of calculating flank milling machining instructions that determine an optimized machining path that results in reduced machining time and superior surface finishes without sacrificing accuracy of the shape of the component. Yet other aspects of the invention include providing the component designer with details on the manufacturability of the component early in the design process.

FIG. 1 shows an example method 5 for designing and manufacturing a flank millable component. As shown in FIG. 1, such a method can begin at step 10, with the design of a flank millable component. As noted above, flank milling involves using the side of a rotary cutter, rather than the end of the cutter, to remove material from a work piece. Designers and manufacturers often try to design a part such that it can be machined with a flank milling process because flank milling can result in improved surface finish and significantly decreased manufacturing time and costs. For example, in the turbomachinery field, the costs for manufacturing a turbomachinery component such as an impeller can be quite high for a number of reasons, including material hardness and complex geometries. Significant reduction in manufacturing time and costs have been realized by utilizing flank milling. In step 10, the component may be designed using computer automated design (CAD) which can involve CAD software operating on one or more computer systems, such as the exemplary systems illustrated in FIG. 28 and described in more detail below. A designer or other operator of the CAD software may select from a myriad of geometry options and geometry modifications to determine the final geometry of the component. During step 10, the CAD software can include various processes that, as will be described in more detail below, are configured to notify the designer when the designer chooses a geometry option that will result in a final component geometry that will most likely not be flank millable. Armed with this valuable information, the designer can make an informed decision to either proceed and design a component that will not be flank millable, or make appropriate adjustments to stay on a flank millable design path.

After a flank millable component has been designed, at step 12, milling machine instructions are calculated for machining the component. The milling instructions can be determined using computer automated manufacturing (CAM) software that, as with the CAD software, can be implemented on one or more computer systems such as the systems illustrated in FIG. 28. The CAM and CAD software may be either integrated in a comprehensive software package or exist separately. During step 12, a data set developed during step 10 that describes the shape of the component can be converted into machining instructions, such as the paths a milling machine cutter will take over a work piece to remove material to obtain the final component geometry. During step 12, the CAM software can include various processes and algorithms that, as will be described below, are configured to calculate smooth machining paths that eliminate excessive machine motion and reduce machining time, without compromising component geometry. In one exemplary embodiment, algorithms can describe the orientation of the cutter in a three dimensional system, such as a spherical coordinate system, and simultaneously minimize cutter motion in both angular planes to find an optimal machining path. In some embodiments, the CAM software may include a simulator that allows the manufacturer to assess machining performance, such as machining time, machine motion, and accuracy before machining the part. The manufacturer may alter the optimized machining instructions based on the results of the simulation. After the machining instructions are determined, at step 14, the part is machined using flank milling for at least a portion of the machining process.

FIG. 2 shows exemplary milling machine 20 that may be used with the processes described herein to flank mill component or work piece 22. In one embodiment, milling machine 20 is a five-axis milling machine having work piece table 24 that can move in two Cartesian directions and one rotary direction and head 26 that can move in one Cartesian direction and one rotary direction. Head 26 is configured to drive rotary cutter 28 which can be used to machine work piece 22 mounted on work piece table 24. While the methods described herein can be used to design and manufacture any number of different types of components, work piece 22 shown in FIG. 2 and in greater detail in FIG. 3, is an exemplary turbomachinery component that can be designed to be flank millable using the processes disclosed herein and also machined using optimized machining instructions also disclosed herein. Component 22 is an exemplary impeller, having a plurality of blades 25 that have ruled surfaces 26 defined by guide curves 28 and 30 connected by straight lines or rulings 32. As used herein and described in more detail below, a ruled surface can generally be assumed to be flank millable. A ruled surface is a surface that can be represented by two or more guide curves, such as guide curves 28 and 30, connected by a plurality of straight lines, also called rulings, such as rulings 32. Complex three dimensional surfaces can be ruled, and for some shapes, such as twisted surfaces, the straight lines or rulings may not be parallel. In addition, some non-ruled surfaces can also be flank milled. The methods of determining improved flank milling instructions described herein can also be used to flank mill some types of non-ruled surfaces.

FIG. 4 illustrates an exemplary process 40 for carrying out step 10 of method 5 described above—designing a flank millable component. Process 40 is an exemplary method that may be implemented in computer software code, such as CAD software configured to design turbomachinery components. Process 40 begins at step 42 with a user selecting a flank millable option, which activates various processes described herein for monitoring the user's geometry selections. At step 44, the program monitors the user's selections to determine if a selection has been made that will result in a component that is not flank millable. If the user has selected such an option, the process continues to step 46 and notifies the user. After notifying the user, at step 48, if the user has made additional geometry selections, the program returns to step 44, and if not, at step 50 the process ends. In some embodiments, process 40 also includes optional steps for providing the user with suggestions for modifying the component geometry to make it flank millable. More specifically, after notifying the user at step 46, the process at step 52 may provide the user with suggestions for making the component flank millable. At step 54, the program determines whether the user has accepted the suggestion, and if not, at step 50, the program ends. In alternative embodiments, the program may provide a notification that process 40 will end because the user has declined to select a flank millable geometry. In yet other embodiments, the process 40 can determine whether the user has made a change other than the change suggested at step 52 that results in a flank millable geometry, and if so, continue to step 48 to determine whether the user has made additional changes. Returning to step 54, if the user accepts the suggested change to the geometry, at step 56, the change is applied to maintain a flank millable component design. The process then continues to step 48 to determine if the user has made additional selections. If not, at step 50 the process ends, and if so, the process returns to step 44 to determine whether the additional selections will make the part no longer flank millable.

FIGS. 5, 6, and 9 illustrate example graphical user interfaces (GUIs) that may be used to implement process 40. FIG. 5 illustrates an example basic geometry GUI 60 that provides basic component geometry options 62, 64, and 66, as well as flank millable option 68 and sub-options to maintain a flank millable geometry 70. As discussed above, a CAD program may provide a user with a plurality of component geometry options, with some options resulting in the component not being flank millable. Basic geometry GUI 60 categorizes a plurality of basic geometry options as either Type A geometries 62 that are normally flank millable, Type B geometries 64 that can be flank millable if additional sub-options are selected or modifications applied, and Type C geometries 66 that are assumed to be not flank millable. Flank millable option 68 is the option monitored in step 42 of process 40 and selecting option 68 will activate the flank milling checks in process 40. Sub-options 70 can be one or more options that allow for at least a portion of the component to be flank millable despite the selection of a geometry that could otherwise make the component no longer flank millable. For example, if the user selects a Type B geometry in category 64, the user could be prompted to select an appropriate sub-option 70 to maintain the component as flank millable. In addition, as discussed in more detail below, the user may select a modification to one of the basic geometry models in categories A or B that would result in the component no longer being flank millable or at least the program no longer considering the component as being flank millable. In such a case, the user may be prompted to select an appropriate sub-option 70 to maintain a flank millable geometry, or to relax certain design constraints so the program can consider the geometry as flank millable.

FIG. 6 illustrates an exemplary basic geometry GUI 74 having a plurality of basic geometry options 76 for designing a turbomachinery component. GUI 74 also has a flank millable option 78 and sub-options 80. In the exemplary GUI 74, “Independent hub and shroud,” “Explicit shroud, radial inlet, exit rake,” “NACA 65 Airfoil blades,” “CETI (Patented),” “Specify shroud and lean angle,” “Use blade sections defined in Z,” and “RTheta 2D Wedge Diffuser” are basic turbomachinery blade geometry options that can be defined by ruled surfaces, or in other words, can result in a flank millable component and would be considered a Type A geometry 62 in example GUI 60. “Fully radial,” “2-D with Bezier beta distribution,” “2-D with straight or circular arc blades,” and “Use a separate blade generating sheet” would be considered Type B geometries 64 requiring additional checks to ensure the component is flank millable. 2D Wedge Diffuser,” “Custom,” and “Specify hub and extrusion direction” would be considered Type C geometries, or in other words, are assumed to be not flank millable. In one exemplary embodiment, if a user selected one of the Type C geometries from GUI 74, flank millable option 78 would be greyed out, or otherwise not selectable. In another embodiment, if the user selects flank millable option 78 after selecting a Type C geometry, the program would warn or prompt the user that a flank millable geometry is not available for the basic geometry model selected.

The “Fully radial,” “2-D with Bezier beta distribution,” “2-D with straight or circular arc blades,” and “Use a separate blade generating sheet” geometries are exemplary Type B geometries because some additional modification(s) or sub-option(s) must be made or selected to ensure the resulting component geometry is flank millable. In this example, these geometries fall under Type B because they have the common characteristic of being defined by a zero-thickness mean camber sheet with a separate user-defined thickness from the mean camber sheet. As discussed above, a surface defined by ruled elements can be assumed to be flank millable. In one embodiment, if a user selects one of these geometries, the geometry will be considered flank millable if the user defines the thickness of the blade along ruled lines. If the user defines the thickness along another set of lines, the geometry would be considered not flank millable. FIGS. 7 and 8 further illustrate two exemplary options for defining the blade thickness for the “Fully Radial” blade geometry. FIG. 7 illustrates a blade shape 82 defined by ruled line elements, also referred to as geometry quasi-orthogonal lines (QO) lines 84. As shown in FIG. 7, in the illustrated embodiment, the geometry QO lines have a constant Z and theta in a cylindrical coordinate system. By contrast, FIG. 8 illustrates the same blade shape 82 defined by flow QO lines 86. If the user defined a thickness from the mean camber sheet along the flow QO lines rather than the geometry QO lines, the resulting surface may not be defined by straight or ruled lines. Thus, additional checks are necessary for these example Type B geometries, here, checking the thickness definition, to confirm the blade will be flank millable. Note that other component geometries can have geometry QO lines and flow QO lines with other orientations.

In the example embodiment, the “Fully radial,” “2-D with Bezier beta distribution,” and “2-D with straight or circular arc blades,” have the common characteristic that thickness is normally applied along flow OQ lines, but if the thickness were applied along the geometry QO lines, the resulting change in component geometry is typically very small. Thus, in one embodiment, when a user selects one of these three Type B geometries, and has selected the flank millable option 78 (FIG. 6), the CAD program may automatically apply the user's thickness definition along geometry QO lines, rather than flow QO lines to ensure the component will have a ruled surface. In an alternative embodiment, the program could warn the user that the thickness must be applied along the geometry QO lines and ask if the thickness definition should be applied along the geometry QO lines. In yet another embodiment, the program could perform an additional check to evaluate the effect of changing the thickness from flow to geometry QO lines on the shape of the component and only change the thickness automatically if the difference is less than a predetermined value.

The “Use a separate blade generating sheet” option (FIG. 6) is an example of a Type B geometry 64 (FIG. 5) because the lines along the blade generating sheet on which the thickness definition is applied is separately defined. Thus, additional sub-options must be selected to ensure the geometry will be flank millable. FIG. 9 illustrates a GUI with examples of user-defined sub-options 90 for the “Use a separate blade generating sheet” option. In this example, two sub-options are relevant to ensuring the geometry is flank millable. Sub-option “Linear theta from hub to shroud” 92 should not be selected because it would define a mean camber sheet that is not ruled in (x,y,z) space, and sub-option “Thickness based on the blade generating lines” 94 should be selected because it will apply thickness along the geometry QO lines.

Referring again to FIG. 6, basic geometry GUI 74 has sub-options to maintain flank millable geometry 80 that can be selected to provide a user with increased flexibility in blade geometry options while still maintaining a blade geometry that will be, at least in part, flank millable. In the example GUI 74, sub-options 80 include “Allow for point milled leading and trailing edges” 96 and “Allow more than two sections to represent the blade shape” 98. Sub-options 96 and 98 are examples of geometry options that allow the program to consider more complex shapes flank millable so that a user can modify a basic geometry, such as one of the basic geometry options 76, while still maintaining a surface that the program considers flank millable.

Sub-option “Allow more than two sections to represent the blade shape” 98 may be used in situations where the user modifies an otherwise flank millable blade geometry such that additional sections are needed to fully describe the blade. For example, FIG. 10 shows an example turbomachinery impeller having a plurality of blades 112 with swept leading edges 114. In this example, dotted line 116 represents the leading edge for the original basic blade geometry. The geometry of blades 112 were modified with an edge cut, here an end portion of the blades being removed, resulting in swept leading edges 114. The original basic blade geometry could be represented by two sections—a hub guide curve or section 118 and a shroud guide curve or section 120. Before making the edge cuts, the program would consider blades 112 to be flank millable because the blades could be represented by two sections—hub guide curve 118 and shroud guide curve 120, with ruled line elements 122 extending between. The edge cuts for the swept leading edge 114, however, cut across ruled line elements 122 such that the entire surface of blade 112 can no longer be represented by line elements 122 extending between two sections 118 and 120. Sub-option 98, however, allows the user to relax the constraints the CAD program uses to determine whether blades 112 are flank millable. By selecting sub-option 98, the program will allow for the addition of one or more guide curves to bound ruled line elements 122 that no longer extend from curve 118 to curve 120. Thus, if a user selects the flank millable option 78 (FIG. 6) and adds a swept leading or trailing edge to an otherwise flank millable geometry, such that the entire blade can no longer be represented as a ruled surface with two guide curves, the program can check to see if the user has selected sub-option “Allow more than two sections to represent the blade shape” 98 and if the sub-option is not selected, warn the user that the edge cuts makes a two section representation impossible. In alternative embodiments, the program could also suggest that sub-option 98 be selected to allow the program to maintain at least a portion of the blade as flank millable.

FIGS. 11 and 12, illustrate another example of a geometry modification that requires the selection of additional sub-options to allow the program to describe at least a portion of the blade with a ruled surface. As shown in FIGS. 11 and 12, blade 126 (FIG. 11) has a sheared leading edge 127, while blade 128 (FIG. 12) has a rounded leading edge 129. A rounded leading edge that is straight and that can be defined by ruled line elements can be flank milled, but if the rounded leading edge is not, for example, if a rounded edge is added to a swept leading edge, then the rounded edge can no longer be represented by a ruled surface. Sub-option 96 “Allow for point milled leading and trialing edge” (FIG. 6) provides increased flexibility so that a user can specify a non-ruled rounded leading or trailing edge. If the user specifies a non-ruled rounded edge on an otherwise flank millable shape and has selected sub-option 96, the program will consider the component flank millable, allowing for the rounded edges to be defined separately and point milled. In an exemplary embodiment, if a user selects the flank millable option 78 (FIG. 6) and selects an otherwise flank millable basic geometry from the basic geometry options 76, but then specifies a non-ruled rounded trailing or leading edge, the program can check to see if the user has selected sub-option “Allow for point milled leading and trialing edge” 96 and if the sub-option is not selected, warn the user that the rounded edge will require point milling. In an alternative embodiment, the program could also suggest that sub-option 96 should be selected to allow the program to maintain at least a portion of the blade as flank millable.

The foregoing discussion of specific basic blade geometries and blade geometry modifications are merely exemplary embodiments implementing the broader concepts disclosed herein. In alternative embodiments, the methods and processes described herein may be applied to a myriad of other turbomachinery component geometries, as well as components other than turbomachinery components.

FIG. 13 illustrates exemplary method 130 for designing a flank millable component, where a computer program, such as a portion of a CAD program, monitors component geometry throughout a design process and notifies a user if the component design veers from a flank millable geometry. FIG. 13 illustrates at a high level, method 130, which includes, inter alia, sub-routines 132. Example embodiments of subroutines 132 are described in more detail in connection with FIGS. 15-17. Method 130 begins at step 134 with the user selecting a component geometry model, and at step 136, checks to see if the user has selected a flank milling option, such as flank millable option 78 (FIG. 6) indicating the user wants to design a flank millable component. If the user has not selected the flank millable option, at step 137, the process ends. If the user has, at step 138 the program checks the geometry model chosen by the user, and at step 140, checks any geometry modifications made by the user. During subroutines 132, the program can provide applicable warnings or notifications 142 related to ensuring the blade is flank millable. At step 144 the program can check if such warnings are generated and if so, at step 146 can display the warnings and can also display suggested fixes. At step 148 the program can check if the user has adopted any of the suggested fixes and if so, at step 150 can apply the fixes and then at step 137 the program ends. In alternative embodiments, after step 150, the program can monitor the component design for additional changes, and if changes are made, re-perform steps 136-150.

FIGS. 14 and 16 illustrate an exemplary embodiment of the check geometry model subroutine 138 (FIG. 13). The illustrated example of sub-routine 138 begins with check basic geometry model subroutine 160 which checks whether the basic geometry model selected, for example, the basic geometry models 76 in example GUI 74 (FIG. 6), is flank millable. After checking the basic geometry model, at step 162, the program determines whether a geometry defined by a zero thickness mean camber sheet with a separate thickness definition was chosen. If such a geometry was chosen, at step 164, the thickness definition is analyzed to determine whether a linear thickness has been defined. If such a selection was not chosen, subroutine 138 ends and the process continues to step 140 (FIG. 13). At step 164, if the thickness definition is not linear, the resulting blade surface will not be ruled, so at step 166, a warning is generated notifying the user that the blade will not be flank millable because of the non-linear thickness definition. After checking whether the thickness is linear, at step 168, the program checks whether the thickness is applied along ruled elements, or geometry QO lines, as described above. If the thickness is not defined along ruled elements, at step 170, a warning is generated notifying the user that the blade will not be flank millable unless the thickness is applied along ruled elements. Subroutine 138 then ends and the process continues to step 140 (FIG. 13). As described above in connection with the Fully radial and 2-D geometries shown in FIG. 6, in alternative embodiments, depending on the specific blade geometry option, at step 168 the program may, instead of warning the user, automatically change the thickness in a post-processing step so the thickness is applied along ruled elements if the difference in the resulting blade geometry is, for example, less than a predetermined value. If such an automatic change is made, the program may notify the user at step 170 that the change was made. For other geometries, such as the “separate blade generating sheet” option (FIG. 6), at step 168, the program may check whether appropriate sub-options, such as sub-options 90 (FIG. 9) are selected in order to determine if the thickness is applied along ruled elements. If the appropriate sub-option is not selected, at step 170 the program can warn the user that the sub-option must be selected to maintain a flank millable geometry. At step 168, if the thickness is defined along ruled elements, subroutine 138 ends and the process continues to step 140 (FIG. 13).

FIG. 16 illustrates an exemplary check basic geometry model subroutine 160, which checks for the selection of particular geometry options to determine if any options have been selected that would result in the component not being flank millable. The specific geometry options discussed herein are merely for illustrative purposes, and subroutine 160 may vary according to the component type being designed and the particular geometry options available. In the illustrated embodiment, subroutine 160 checks at step 174 whether an unknown geometry model has been selected and if so, at step 176 warns the user that the blade is assumed to be not flank millable because the geometry is not recognized. If an unknown geometry model is not selected, at step 178 sub-routine 160 checks if the geometry has more than two user controlled sections, and if so, at step 180 warns the user that the program will assume the blade will not be flank millable. If there are not more than two user-controlled sections, at step 182, sub-routine 160 checks if the geometry is ruled in non-Cartesian coordinates and if so, at step 184 warns the user that the blade surface will not be ruled in (x,y,z) space. If the model is ruled in Cartesian coordinates, at step 186, sub-routine 160 checks if the blade edges are aligned with the ruled element direction. If they are so aligned, subroutine 160 ends and the process continues to step 162 (FIG. 14). If not, at step 188, subroutine 160 checks if the appropriate sub-option allowing the blade to be represented by more than two sections, for example sub-option 98 (FIG. 6) is selected. If not, at step 190, the program warns the user that the blade edges make a two-section representation impossible. In an alternative embodiment, the program could suggest that an appropriate sub-option, for example, sub-option 98 (FIG. 6), must be selected. At step 192, the program checks whether the user has specified that the edges not aligned with a ruled element direction are rounded, and if not, subroutine 160 ends and the process continues to step 162 (FIG. 14). If rounded edges are specified, at step 194 the subroutine checks whether the user has selected a sub-option allowing for point milling a leading or trailing edge, such as sub-option 96 (FIG. 6). If the point milling leading and/or trailing edges sub-option is not selected, at step 196, the program warns the user that the edges will require point milling. In an alternative embodiment, the program mat also suggest the sub-option be selected to allow the program to consider the blade as otherwise flank millable. If the sub-option is selected, subroutine 160 ends and the process continues to step 162 (FIG. 14). As mentioned above, FIGS. 14 and 16 illustrate an exemplary check geometry model subroutine 138 (FIG. 13), which illustrates how basic geometry selections for a particular set of geometries for a particular type of component (turbomachinery blade) would be performed. In alternative embodiments, the check geometry model subroutine may vary depending on the type of component being designed and the geometry options available in the particular CAD program.

Returning to FIG. 13, check modifications to geometry model sub-routine 140 may include a variety of different implementations depending, in part, on the geometry modification options provided by the CAD program. One example of check modifications to geometry model sub-routine 140 is illustrated in FIGS. 15 and 16. As described above, the geometry or shape of a component may be modified in a way that additional sub-options must be selected to maintain the component as, at least partially, flank millable, or to allow the program to consider more complex shapes as flank millable. As shown in FIG. 15, example sub-routine 140 begins at step 200, determining whether a basic geometry model has been modified. If not, subroutine 140 ends and the process continues to step 142 (FIG. 13). If a basic geometry model has been modified, in subroutine 202, the program checks whether the component can be considered flank millable despite the modification, including if one or more required sub-options are selected that, for example, relax the constraints the program uses to determine if the component is flank millable. If, at step 204, it is determined the modification will result in a component that is not considered flank millable, at step 206, the program generates a warning, subroutine 140 ends, and the process continues to step 142 (FIG. 13). If at step 204 it is determined the geometry can still be considered flank millable if certain sub-options are selected, then at step 208, the program determines whether those sub-options have been selected. If such sub-options have been selected, sub-routine 140 ends, and if not, at step 210 the subroutine generates the appropriate warning and then the subroutine ends and the process continues to step 142 (FIG. 13).

FIG. 17 illustrates an exemplary embodiment of “check if flank millable if sub-option(s) selected” subroutine 202 (FIG. 15) applied to a turbomachinery component CAD program. Sub-routine 202 begins at step 220, checking if a blade bowing option has been selected. If so, sub-routine 202 assumes the blade surface is no longer ruled and at step 224 warns the user that selecting the bowing option will result in a component that is not flank millable. Whether or not blade bowing is selected, subroutine 202 continues to step 226, to check whether a blade twisting option has been selected. If so, sub-routine 202 assumes the blade surface is no longer ruled and at step 228 warns the user that selecting the twisting option will result in a component that is not flank millable. Whether or not the blade twisting option was selected, subroutine 202 continues to step 230 to check whether a fillet option has been selected, which, for example, adds a fillet or curved surface to the region where a blade meets the hub of an impeller. If the fillet option is selected, sub-routine 202 assumes the blade surface is no longer ruled and at step 232 warns the user that selecting the twisting option will result in a component that is not flank millable. Whether or not a fillet option was selected, subroutine 202 continues to step 234 to check whether a blade surface smoothing option has been selected. If so, at step 236 the program checks whether smoothing has been applied to make a rounded leading or trailing edge, and if so, at step 238 determines whether the rounded edge has been cut from the blade or added to the basic blade shape. If the rounded edge was cut from the blade, sub-routine 202 assumes the rounding results in a blade surface that is no longer ruled and at step 240 warns the user that selecting the smoothing option will result in a component that is not flank millable. After performing the smoothing and rounded edge checks in steps 234-238, subroutine 202 continues to step 242 to check whether any edge cuts have been applied, such as the example edge cuts discussed above in connection with FIG. 12. If so, at step 244 the program checks whether the edge cut results in a swept edge or diameter trim that modifies a leading or trailing edge, and if so, at step 246 the program determines whether a sub-option allowing for the blade to be represented by more than two sections, such as, for example sub-option 98 (FIG. 6) has been selected. If such a sub-option has not been selected, at step 248, a warning is generated that the swept edge or diameter trim makes a two section representation impossible. In an alternative embodiment, the program could also suggest that a sub-option be selected to allow the blade to be represented by more than two sections. At step 244, if the program determines the edge cut results in a swept edge or diameter trim that modifies a leading or trailing edge, the program also checks whether the modified leading or trailing edge is rounded, and if so, at step 252 checks whether a sub-option allowing for point milling, such as example sub-option 96 (FIG. 6) has been selected. If not, at step 254, a warning is generated that the rounded edge cut will require point milling. In alternative embodiments, the program could also suggest that a sub-option allowing for point milling a portion of the blade be selected to allow the program to consider the remainder of the blade as flank millable. After performing the edge rounding checks of steps 250 and 252, the subroutine ends and the process continues to step 204 (FIG. 15).

In the example sub-routine 202 shown in FIG. 17, for many potential blade modification options, such as bowing, twisting, fillets, and surface smoothing, the example sub-routine assumes the blade is not flank millable if the particular options are selected. In alternative embodiments, the program could perform additional checks and provide additional sub-options that would allow the blade to be, at least in part, flank millable despite the modification. For example, if a fillet is applied, instead of assuming the fillet results in a blade that is not flank millable, the sub-routine could allow the fillet portion of the blade to be represented by separate sections and, for example, point milled. Similar additions could be made for other geometry options to allow for more complex surfaces to be represented separately and maintain a portion of the blade as flank millable.

Returning to FIG. 1, after step 10, where a flank millable component is designed, at step 12, milling machine instructions are calculated for milling the part. FIG. 18 illustrates step 12 in further detail. As shown in FIG. 18, step 12 involves a first step 260, where a data set representing the shape of a flank millable component is received. At step 262, the data set is converted into a series of cutter positions, such as positions of cutter 28 of 5-axis milling machine 20 (FIG. 2).

Referring again to FIG. 2, as described above, component 22 is an exemplary impeller, having a plurality of blades 25 that have ruled surfaces 26 defined by guide curves 28 and 30 connected by straight lines or rulings 32. FIG. 19 illustrates the initial position of cutter 28 (also shown in FIG. 2) determined in step 262 (FIG. 18). The position shown in FIG. 20 is the “pure” geometric solution for flank milling of ruled surfaces, where cutter 28 is located tangent to ruled surface guide curves 28, 30 at the junctions of the rulings 32. The tangency between cutter 28 and the ruled surface is shown by line 280 (FIG. 19), which is coincident with a ruling 32. As discussed below, this orientation can be referred to as an isoparametric-tangency orientation. The isoparametric-tangency orientation, however, can result in inaccurate machining results when the surface of the component being machined is curved or twisted. As shown in FIG. 20, when machining certain non-planar surfaces, cutter 28 can remove too much material, resulting in an undercut 282 represented by the difference between the desired surface at ruling 32 and the actual path of the cutter, represented by line 284. Undercut 282 can, however, be minimized by re-orienting the cutter from an isoparametric-tangency orientation to a non-isoparametric tangency orientation. An exemplary non-isoparametric tangency orientation is shown in FIG. 21, where bottom portion 286 of cutter 28 is kept at the location where a ruling 32 intersects guide curve 28, and top portion 288 of the cutter is moved along guide curve 30 until the contact point of cutter 28, represented by line 284 most closely matches ruled surface 26 and undercut 282 (FIG. 20) is minimized. In alternative embodiments, top portion 288 could remain fixed and bottom portion 286 could be moved along guide curve 28, or both ends of cutter 28 could be adjusted. Also, a reference point other than the guide curves could be used for the adjustment.

Thus, an undercut-minimized cutter orientation can be calculated for every point along a surface by finding a deviation from the isoparametric-tangency orientation at each location. An undercut-minimized solution, however, is often not desirable because it can result in unacceptable milling machine motion. For example, the rotary motion of milling machine head 26 (FIG. 2) can be unsmooth, and there can be wild swings in work piece table 24 rotary motion, approaching 180° from one instruction to the next, even when there is only a slight change in cutter orientation. Thus, a more optimized machining instruction is needed that results in a within-tolerance undercut while also providing smooth milling machine motion. Such an optimized set of instructions is determined at step 264 (FIG. 18).

FIG. 22 illustrates an exemplary process for calculating machine instructions for flank milling a work piece that results in within tolerance undercut while also minimizing machine motion, resulting in smooth machine motion and reduced machining time. At step 289, a dataset representing a machined surface is received and an initial cutter orientation is calculated. FIG. 23 illustrates an exemplary coordinate system utilized by the present invention to calculate an optimized machine path. At step 289 a two parameter data set S(u,v) representing a machined surface 290 (FIG. 23) of a component, is received. As shown in FIG. 23, surface 290 can be represented by isoparametric guide curves 292 and 294, defined as a u-curves with a constant v value. The orientation of cutter 28 can be defined by the (x,y,z) location of cutter tip center 294, which is offset from point (u,v) by the cutter tip radius, and cutter orientation vector 296 defined in (Φ,θ) spherical coordinates, with the cutter orientation vector being directly related to the rotational axes of milling machine 20. FIG. 23 illustrates cutter 28 in an isoparametric tangency orientation with the cutter orientation vector 296 aligned with an isoparametric ruling along a constant u curve, indicated by cutter contact point 298 at (u,0). To determine the initial cutter orientation at step 289 (FIG. 22), the program calculating the machining instructions also receives information on the size and shape of the cutter 28. FIG. 24 illustrates exemplary cutter shapes that may be used with a milling machine such as milling machine 20, with possible cutter shapes including cylindrical with a ball end 300, conical with a ball end 302, cylindrical with a flat end 304, and conical with a flat end 306. The shape and radius of the cutter is used to calculate the offset of cutter tip center 294 from point (u,v) (FIG. 23), and cutter orientation vector 296.

With an initial cutter orientation determined, at step 308, a subset of points along surface 290 are selected as fixed points and an undercut-minimized cutter orientation is calculated at each of those points. FIGS. 25 and 26 provide a conceptual illustration of this step, where lines 310 (FIG. 25) represent all of the machining positions for surface 290 and lines 312 (FIG. 26) are a subset of fixed points, representing a subset of positions 310, where an undercut-minimized cutter orientation is determined. As described above, an undercut-minimized orientation can be determined by altering the angle of the cutter 28 with respect to the surface 290 (FIG. 23). In the illustrated embodiment, the undercut-minimized orientation is determined by maintaining cutter tip 294 at point (u,v), and varying the contact point of cutter 28 along isoparametric guide curve 294 from point 298 at (u,0) to a point (u+/−Δu, 0) 302 (FIG. 23). At step 314, an initial cutter orientation is calculated for the remaining points, or unfixed points by linearly interpolating from the fixed points 312 undercut-minimized orientations. At step 316 a machine motion ratio is checked for each of fixed points 312 to determine whether any of the undercut-minimized orientations will result in excessive machine motion. It has been determined, for example, that near-vertical cutter orientations can result in large machine motion. In an example embodiment, the machine motion ratio is defined by the following equation:

$\begin{matrix} {{{Machine}\mspace{14mu} {Motion}\mspace{14mu} {Ratio}} = \frac{{distance}\mspace{14mu} {the}\mspace{14mu} {tool}\mspace{14mu} {tip}\mspace{14mu} {travels}\mspace{14mu} {relative}\mspace{14mu} {to}\mspace{14mu} {the}\mspace{14mu} {machine}}{{distance}\mspace{14mu} {the}\mspace{14mu} {tool}\mspace{14mu} {travels}\mspace{14mu} {relative}\mspace{14mu} {to}\mspace{14mu} {the}\mspace{14mu} {workpiece}}} & {{Eq}.\mspace{14mu} (1)} \end{matrix}$

At step 318, if the machine motion ratio for any of the fixed point undercut-minimized orientations is greater than a predetermined value, then that point is unfixed and assigned an initial linearly-interpolated orientation at step 314. The predetermined value can be any number, and can be a user defined parameter. In an example embodiment, the predetermined value can be set to 2 such that if the machine motion ratio for any fixed point is greater than 2, that point will be removed from the subset of fixed points.

At step 320, an optimized cutter orientation is determined for each of the unfixed points. U.S. Pat. No. 5,391,024 entitled “Method for Multi-Criteria Flank Milling of Ruled Surfaces,” which is incorporated by reference herein in its entirety, describes earlier approaches to determining a machining path that sought to calculate machining instructions resulting in within-tolerance undercut while minimizing machine motion. Approaches described in U.S. Pat. No. 5,391,024 include separately interpolating cutter orientation vector Φ values and e values, and then using a empirically based scoring system to select one of the two solutions. While those earlier approaches resulted in improved machining instructions relative to calculating an undercut-minimized machine path, they still resulted in unsmooth machine motion for certain shapes. At step 320, an improved calculation is utilized that determines an optimized machining path by simultaneously minimizing machine motion in both the Φ and θ directions. In an example embodiment, the optimization calculation is defined by the following objective function:

$\begin{matrix} {{S = {{\sum\limits_{i = 3}^{n}\left( {\Delta^{2}\phi_{i}} \right)^{2}} + \left( {\Delta^{2}\theta_{i}} \right)^{2}}}{where}} & {{Eq}.\mspace{14mu} (2)} \\ {{\Delta^{2}\phi_{i}} = {{\Delta\phi}_{i} - {\Delta \; \phi_{i - 1}}}} & {{Eq}.\mspace{14mu} (3)} \\ {{\Delta \; \phi_{i}} = \frac{\phi_{i} - \phi_{i - 1}}{d_{i} - d_{i - 1}}} & {{Eq}.\mspace{14mu} (4)} \\ {{\Delta^{2}\theta_{i}} = {{\Delta \; \theta_{i}} - {\Delta\theta}_{i - 1}}} & {{Eq}.\mspace{14mu} (5)} \\ {{\Delta\theta}_{i} = \frac{\theta_{i} - \theta_{i - 1}}{d_{i} - d_{i - 1}}} & {{Eq}.\mspace{14mu} (6)} \\ {{\phi_{i}\left( {\Delta \; u_{i}} \right)} = {\phi_{io} + {\frac{\phi_{i}}{u}\Delta \; u_{i}}}} & {{Eq}.\mspace{14mu} (7)} \\ {{\theta_{i}\left( {\Delta \; u_{i}} \right)} = {\theta_{io} + {\frac{\theta_{i}}{_{u}}\Delta \; u_{i}}}} & {{Eq}.\mspace{14mu} (8)} \end{matrix}$

-   Δφ_(i)=first finite difference -   Δ²φ_(i)=second finite difference -   φ_(i)=machine axis value φ at point i -   θ_(i)=machine axis value θ at point i -   d_(i)=distance along machining path at point i     As shown in equation (2), the objective function S is defined as the     sum of the squares of the second finite differences of the phi and     theta machining axes with Δu_(i) as the independent variable. The     objective function is minimized using standard mathematical     techniques to find values of Δu. This is done by expanding the terms     of the objective function, setting ∂S/∂Δu_(i)=0, and solving the     resulting system of 5-banded linear equations. New values of phi and     theta are then calculated. The optimizer is called iteratively due     to the linear approximation of φ_(i)(Δu_(i)) and θ_(i)(Δu_(i)), and     stops when the change in the value of the objective function between     subsequent calculations is less than a predetermined value. As shown     in equations 5 and 6, a backward differencing scheme is utilized in     the present embodiment. In alternative formulations, a central or     forward differencing scheme could also be utilized.

The result of the machine-motion minimized calculation at step 320, where an objective function, such as objective function S (Eq. 2) is minimized, is an optimized cutter path where machine motion in both the Φ and θ directions is simultaneously minimized. The optimized cutter path is reflected in new cutter orientation Δu values (FIG. 23) for each of the unfixed points. Because the objective function S (Eq. 2) does not consider undercut, at step 322, the undercut is checked at each of the unfixed points. At step 324, if the undercut at any of the unfixed points is greater than a predetermined value, then those points are added to the subset of fixed points (step 308) where an undercut-minimized orientation is assigned. The process is then repeated for the remaining unfixed points to determine machine-motion minimized orientations. The predetermined value used at step 324 can be a user defined parameter and can vary depending on the acceptable tolerances for the component being machined, with a lower predetermined value being set for parts having tighter tolerances.

In some embodiments, at step 326, additional machine motion control can be added to one or more locations. For example, for some surfaces, the φ and/or θ curves calculated by the minimized objective function can have a high rate of change in certain areas, such as endpoints of the cutter path. For those cases, the first finite differences of φ and θ can be added to the objective function S in regions of high motion which will result in a flatter optimized Δu graph in those regions. In addition, in some exemplary embodiments, a user may specify the Δu values for one or more locations to manually set the orientation to either minimize machine motion or undercut, or both. At step 328, an optimized set of machining instructions is generated.

FIG. 27 illustrates a design process for designing a flank millable component with improved manufacturability. At step 330, a designer utilizing a CAD program may select a flank millable option, such as the flank millable options disclosed herein, to ensure the final component design is flank millable. At step 332, an initial flank millable geometry is determined. At step 334, the CAD program includes functionality to translate the geometry into optimized machine instructions, using for example, the methods disclosed herein for determining machine instructions that result in within-tolerance undercut while minimizing machine motion. At step 336, the CAD program can perform a machining simulation to assess the machinability of the component and determine, for example, locations of the component that will be difficult to machine or result in excessive machining time. At step 338, armed with this information, the designer may alter the component geometry and then re-perform steps 334 and 336 until an optimized component geometry is determined.

It is to be noted that any one or more of the aspects and embodiments described herein may be conveniently implemented using one or more machines (e.g., one or more computing devices that are utilized as a user computing device for an electronic document, one or more server devices, such as a document server) programmed according to the teachings of the present specification and appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure. Aspects and implementations discussed above employing software and/or software modules may also include appropriate hardware for assisting in the implementation of the machine executable instructions of the software and/or software module.

Such software may be a computer program product that employs a machine-readable storage medium. A machine-readable storage medium may be any medium that is capable of storing and/or encoding a sequence of instructions for execution by a machine (e.g., a computing device) and that causes the machine to perform any one of the methodologies and/or embodiments described herein. Examples of a machine-readable storage medium include, but are not limited to, a magnetic disk (e.g., a conventional floppy disk, a hard drive disk), an optical disk (e.g., a compact disk “CD”, such as a readable, writeable, and/or re-writable CD; a digital video disk “DVD”, such as a readable, writeable, and/or rewritable DVD), a magneto-optical disk, a read-only memory “ROM” device, a random access memory “RAM” device, a magnetic card, an optical card, a solid-state memory device (e.g., a flash memory), an EPROM, an EEPROM, and any combinations thereof. A machine-readable medium, as used herein, is intended to include a single medium as well as a collection of physically separate media, such as, for example, a collection of compact disks or one or more hard disk drives in combination with a computer memory. As used herein, a machine-readable storage medium does not include a signal.

Such software may also include information (e.g., data) carried as a data signal on a data carrier, such as a carrier wave. For example, machine-executable information may be included as a data-carrying signal embodied in a data carrier in which the signal encodes a sequence of instruction, or portion thereof, for execution by a machine (e.g., a computing device) and any related information (e.g., data structures and data) that causes the machine to perform any one of the methodologies and/or embodiments described herein.

Examples of a computing device include, but are not limited to, an electronic book reading device, a computer workstation, a terminal computer, a server computer, a handheld device (e.g., a tablet computer, a personal digital assistant “PDA”, a mobile telephone, a smartphone, etc.), a web appliance, a network router, a network switch, a network bridge, any machine capable of executing a sequence of instructions that specify an action to be taken by that machine, and any combinations thereof. In one example, a computing device may include and/or be included in a kiosk.

FIG. 28 shows a diagrammatic representation of one embodiment of a computing device in the exemplary form of a computer system 400 within which a set of instructions for performing the methods disclosed herein. It is also contemplated that multiple computing devices may be utilized to implement a specially configured set of instructions for causing the device to perform any one or more of the aspects and/or methodologies of the present disclosure. Computer system 400 includes a processor 404 and a memory 408 that communicate with each other, and with other components, via a bus 412. Bus 412 may include any of several types of bus structures including, but not limited to, a memory bus, a memory controller, a peripheral bus, a local bus, and any combinations thereof, using any of a variety of bus architectures.

Memory 408 may include various components (e.g., machine readable media) including, but not limited to, a random access memory component (e.g, a static RAM “SRAM”, a dynamic RAM “DRAM”, etc.), a read only component, and any combinations thereof. In one example, a basic input/output system 416 (BIOS), including basic routines that help to transfer information between elements within computer system 400, such as during start-up, may be stored in memory 408. Memory 408 may also include (e.g., stored on one or more machine-readable media) instructions (e.g., software) 420 embodying any one or more of the aspects and/or methodologies of the present disclosure. In another example, memory 408 may further include any number of program modules including, but not limited to, an operating system, one or more application programs, other program modules, program data, and any combinations thereof.

Computer system 400 may also include a storage device 424. Examples of a storage device (e.g., storage device 424) include, but are not limited to, a hard disk drive for reading from and/or writing to a hard disk, a magnetic disk drive for reading from and/or writing to a removable magnetic disk, an optical disk drive for reading from and/or writing to an optical medium (e.g., a CD, a DVD, etc.), a solid-state memory device, and any combinations thereof. Storage device 424 may be connected to bus 412 by an appropriate interface (not shown). Example interfaces include, but are not limited to, SCSI, advanced technology attachment (ATA), serial ATA, universal serial bus (USB), IEEE 1294 (FIREWIRE), and any combinations thereof. In one example, storage device 424 (or one or more components thereof) may be removably interfaced with computer system 400 (e.g., via an external port connector (not shown)). Particularly, storage device 424 and an associated machine-readable medium 428 may provide nonvolatile and/or volatile storage of machine-readable instructions, data structures, program modules, and/or other data for computer system 400. In one example, software 420 may reside, completely or partially, within machine-readable medium 428. In another example, software 420 may reside, completely or partially, within processor 404.

Computer system 400 may also include an input device 432. In one example, a user of computer system 400 may enter commands and/or other information into computer system 400 via input device 432. Examples of an input device 432 include, but are not limited to, an alpha-numeric input device (e.g., a keyboard), a pointing device, a joystick, a gamepad, an audio input device (e.g., a microphone, a voice response system, etc.), a cursor control device (e.g., a mouse), a touchpad, an optical scanner, a video capture device (e.g., a still camera, a video camera), touchscreen, and any combinations thereof. Input device 432 may be interfaced to bus 412 via any of a variety of interfaces (not shown) including, but not limited to, a serial interface, a parallel interface, a game port, a USB interface, a FIREWIRE interface, a direct interface to bus 412, and any combinations thereof. Input device 432 may include a touch screen interface that may be a part of or separate from display 436, discussed further below. Input device 432 may be utilized as a user selection device for selecting one or more graphical representations in a graphical interface as described above.

A user may also input commands and/or other information to computer system 400 via storage device 424 (e.g., a removable disk drive, a flash drive, etc.) and/or network interface device 440. A network interface device, such as network interface device 440 may be utilized for connecting computer system 400 to one or more of a variety of networks, such as network 444, and one or more remote devices 448 connected thereto. Examples of a network interface device include, but are not limited to, a network interface card (e.g., a mobile network interface card, a LAN card), a modem, and any combination thereof. Examples of a network include, but are not limited to, a wide area network (e.g., the Internet, an enterprise network), a local area network (e.g., a network associated with an office, a building, a campus or other relatively small geographic space), a telephone network, a data network associated with a telephone/voice provider (e.g., a mobile communications provider data and/or voice network), a direct connection between two computing devices, and any combinations thereof. A network, such as network 444, may employ a wired and/or a wireless mode of communication. In general, any network topology may be used. Information (e.g., data, software 420, etc.) may be communicated to and/or from computer system 400 via network interface device 440.

Computer system 400 may further include a video display adapter 452 for communicating a displayable image to a display device, such as display device 436. Examples of a display device include, but are not limited to, a liquid crystal display (LCD), a cathode ray tube (CRT), a plasma display, a light emitting diode (LED) display, and any combinations thereof. Display adapter 452 and display device 436 may be utilized in combination with processor 404 to provide a graphical representation. In addition to a display device, a computer system 400 may include one or more other peripheral output devices including, but not limited to, an audio speaker, a printer, and any combinations thereof. Such peripheral output devices may be connected to bus 412 via a peripheral interface 456. Examples of a peripheral interface include, but are not limited to, a serial port, a USB connection, a FIREWIRE connection, a parallel connection, and any combinations thereof.

Exemplary embodiments have been disclosed above and illustrated in the accompanying drawings. It will be understood by those skilled in the art that various changes, omissions and additions may be made to that which is specifically disclosed herein without departing from the spirit and scope of the present invention. 

What is claimed is:
 1. A method of designing a flank millable component comprising: providing a user with a plurality of options for defining a geometry of a component; and notifying the user when the user selects an option from said plurality of options that will result in the component not being flank millable.
 2. The method of claim 1, wherein said notifying step further comprises providing the user with one or more suggestions for modifying the geometry of the component to make the component flank millable.
 3. The method of claim 1, wherein said providing step comprises providing the user with at least one geometry option that requires the selection of a sub-option for the component to be flank millable.
 4. The method of claim 3, further comprising, checking, when the user selects said at least one geometry option that requires the selection of a sub-option, if the user has selected said sub-option; said notifying step further comprising notifying the user if the user has not selected said sub-option.
 5. The method of claim 4, wherein said providing step comprises providing the user with a geometry option that, when selected, results in a surface of the component no longer being fully defined as a two-section ruled surface; and said checking step comprising checking, when the user selects said geometry option, that results in the component surface no longer being fully defined as a two-section ruled surface checking if the user selected a sub-option that allows the component to be represented by more than two sections.
 6. The method of claim 5, wherein said providing step comprises providing the user with a geometry option that removes at least a portion of a leading edge or trailing edge of a turbomachinery blade.
 7. The method of claim 6, wherein said providing step further comprises providing the user with an option to specify a rounded edge; and said checking step comprises, if the user selects said geometry option that removes at least a portion of a leading edge or trailing edge, and has also selected said rounded edge geometry option, checking if the user selected a sub-option that allows the edge of the component to be point milled.
 8. The method of claim 4, wherein said component comprises a turbomachinery blade, and wherein said providing step comprises providing the user with a geometry option that allows the definition of a separate blade generation sheet of the turbomachinery blade; and said checking step comprises checking if the user selected a sub-option that requires a thickness of the turbomachinery blade to be based on blade generating lines.
 9. The method of claim 8, wherein said checking step further comprises checking if the user selected a second sub-option that interpolates the thickness in non-Cartesian coordinates; said notifying step further comprising prompting the user to de-select said second sub-option when said second sub-option is selected.
 10. The method of claim 1, wherein said providing step comprises providing the user with at least one geometry option that has a small deviation from a flank millable geometry, and said method further comprises, if the user selects said at least one geometry option that has a small deviation from a flank millable geometry, automatically modifying the geometry of the component to make the component flank millable.
 11. The method of claim 10, wherein, when said at least one geometry option that has a small deviation from a flank millable geometry is selected, the geometry of the component when thickness is applied along flow quasi-orthogonal (“QO”) lines has minimal variation from the geometry of the component when thickness is applied along geometry QO lines.
 12. The method of claim 10, wherein said at least one geometry option that has a small deviation from a flank millable geometry is selected from the group consisting of (1) fully radial, (2) 2-D with Bezier beta distribution, (3) 2-D with straight arc blades, and (4) 2-D with circular arc blades.
 13. The method of claim 1, wherein the plurality of options include a first category that comprises a geometry that is flank millable, a second category that comprises a geometry that is flank millable when additional conditions are imposed, and a third category that comprises a geometry that is assumed to be not flank millable; and said notifying step comprises providing a first notification when the user selects a geometry in said second category but has not selected a sub-option for imposing said additional conditions, and providing a second notification when the user selects a geometry in said third category.
 14. The method of claim 1, wherein said component comprises a turbomachinery blade, and wherein said providing step comprises providing the user with a geometry option selected from the group consisting of (1) a geometry that defines a non-linear thickness of the turbomachinery blade along a mean camber sheet, (2) a geometry option for bowing said turbomachinery blade, (3) a geometry option for a component ruled in cylindrical or spherical coordinates rather than Cartesian coordinates, (4) a geometry option for the addition of a fillet, and (5) a geometry option for smoothing a surface of the component; and said notifying step comprising, if the user selects one of said geometry options in said group of geometry options, notifying the user that the turbomachinery blade will not be flank millable.
 15. The method of claim 1, wherein said component comprises a turbomachinery blade, and wherein said providing step comprises providing the user with a geometry option selected from the group consisting of (1) a geometry option for the addition of a fillet, and (5) a geometry option for smoothing a surface of the component. said notifying step comprising, if the user selects one of said geometry options in said group of geometry options, checking if a sub-option has been selected that allows the program to consider at least a portion of the component as flank millable, and, if said sub-option is not selected, prompting the user to select said sub-option.
 16. The method of claim 15, wherein said sub-option is selected from the group consisting of (1) a sub-option allowing the blade to be represented by more than two sections, and (2) a sub-option allowing a section of the blade to be point milled.
 17. A method of determining machine instructions for flank milling a surface with a milling machine having a cutter, the machine instructions being determined from an array of data points representing a series of cutter positions along the surface, an orientation of the cutter being a function of an azimuthal angle (θ) and a polar angle (Φ), the method comprising: determining an initial set of cutter orientations; and calculating a machine motion minimized set of cutter orientations, wherein said calculating step comprises using an optimizer to simultaneously minimize machine motion in both the θ and Φ directions.
 18. The method of claim 17, wherein said optimizer minimizes an objective function, said objective function having a solution that varies based on a change in a rate of change of phi and theta.
 19. The method of claim 18, wherein the objective function is a function of a deviation (Δu) of the cutter from an isoparametric-tangency orientation.
 20. The method of claim 18, wherein the objective function is a function of a sum of squares of finite differences of θ and Φ.
 21. The method of claim 17, wherein said optimizer minimizes an objective function, wherein said objective function is the following: $S = {{\sum\limits_{i = 3}^{n}\left( {\Delta^{2}\phi_{i}} \right)^{2}} + \left( {\Delta^{2}\theta_{i}} \right)^{2}}$ ${wherein},\begin{matrix} {{\Delta^{2}\phi_{i}} = {{\Delta\phi}_{i} - {\Delta \; \phi_{i - 1}}}} \\ {{\Delta \; \phi_{i}} = \frac{\phi_{i} - \phi_{i - 1}}{d_{i} - d_{i - 1}}} \\ {{\Delta^{2}\theta_{i}} = {{\Delta \; \theta_{i}} - {\Delta\theta}_{i - 1}}} \\ {{\Delta\theta}_{i} = \frac{\theta_{i} - \theta_{i - 1}}{d_{i} - d_{i - 1}}} \end{matrix}$ d_(i)=distance along machining path at point i
 22. The method of claim 17, wherein said determining step comprises: selecting a subset of the data points as fixed points; calculating an undercut-minimized cutter orientation at each of the fixed points; and calculating a cutter orientation at un-fixed points by linearly interpolating from the undercut-minimized orientations.
 23. The method of claim 22, wherein said selecting step comprises selecting a larger number of fixed points in areas of the surface that are more contoured.
 24. The method of claim 22, further comprising, after said step of calculating an undercut-minimized cutter orientation; calculating a machine motion ratio at each fixed point; comparing said machine motion ratio to a first predetermined value; if said machine motion ratio is greater than said predetermined value, unfixing said fixed point.
 25. The method of claim 17, further comprising, after said calculating step; calculating an undercut at each point; comparing said undercut to a second predetermined value; for any point where said undercut is greater than said second predetermined value, calculating an undercut-minimized cutter orientation for said point(s), and re-performing said step of calculating a machine motion minimized set of cutter orientations on points other than said point(s) with said calculated undercut-minimized cutter orientation.
 26. The method of claim 22, further comprising, after said step of calculating a machine motion minimized set of cutter orientations; calculating an undercut at each un-fixed point; comparing said undercut to a second predetermined value; for any point where said undercut is greater than said second predetermined value, calculating an undercut-minimized cutter orientation for said point(s) and adding said point(s) to said subset of fixed points, and re-performing said step of calculating a machine motion minimized set of cutter orientations on said un-fixed points.
 27. The method of claim 17, further comprising adding additional machine motion control in areas of the surface having high machine motion.
 28. The method of claim 27, wherein said optimizer minimizes an objective function, and wherein said step of adding additional machine motion control comprises adding a first finite difference of said θ and Φ to said objective function in said areas of the surface having high machine motion.
 29. The method of claim 27, wherein said step of adding additional machine motion control comprises allowing a user to manually specify the cutter orientation at one or more points in said areas of the surface having high machine motion.
 30. The method of claim 27, wherein said areas of the surface having high machine motion comprise data points at the ends of a machining path of the cutter.
 31. The method of claim 17, further comprising: receiving cutter-type input parameters representing a shape and size of the cutter; and determining an initial set of cutter position data points by offsetting a data set representing the surface by a radius of the cutter.
 32. The method of claim 17, wherein said array of data points are calculated from a data set S(u,v) representing the surface and at least a portion of said surface is a ruled surface having straight lines along constant u curves.
 33. A method of flank milling a component comprising: providing a component-geometry subroutine capable of determining a surface geometry of a flank millable component; said component-geometry subroutine configured to notify a user of said sub-routine when the user selects a geometry option that will result in the component not being flank millable; and providing a machine-instruction subroutine capable of converting a surface geometry calculated by said component-geometry subroutine into machine instructions for machining a flank millable component with the cutter of a milling machine; said machine-instruction subroutine configured to calculate machine instructions that result in minimal milling machine motion by simultaneously minimizing the motion of the milling machine in both azimuthal and polar directions. 